The arithmetic unit is one of the most important components of any integrated electronic data processing system. Arithmetic units perform a wide variety of mathematical functions upon operands which are transmitted from other portions of an integrated system. Most present arithmetic units perform the required mathematical function using methods which require only addition, subtraction and shifting operations. These methods are more time consuming than methods which require the more complicated multiplication, division and square root functions.
Implementation of arithmetic units using full precision array multipliers allow for the use of the faster methods which include multiplications and divisions. However, full precision array multipliers are large complex devices which use valuable semiconductor surface area. In addition, array multipliers which use operands which are in non-redundant format are inherently slow due to the carry propagation problems within the adder trees contained in the multiplier implementations.
Accordingly, a need has arisen for a multiplier circuit which allows for the implementation of complex methods to calculate various mathematical functions. A further need has arisen for a multiplier circuit which is fast but efficiently uses a minimum of semiconductor surface area.